package com.team5101.service.impl;

import com.team5101.dao.INowFilmDao;
import com.team5101.entity.AllMoviesTimes;
import com.team5101.entity.NowFilm;
import com.team5101.entity.User;
import com.team5101.service.IHotFsService;
import com.team5101.utils.DateSubUtil;
import com.team5101.utils.FenYeUtile;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Service
public class HotFsServiceImpl implements IHotFsService {

    @Autowired
    private INowFilmDao iNowFilmDao;

    public Integer selectByphone(User user) {
        Integer insuccess=null;
        //拿出phone
        String phone = user.getuTelephone();
        System.out.println("phone"+phone);
        //拿到通过手机号查询出来的User
        User userByPhone = iNowFilmDao.getUserByPhone(phone);
        System.out.println(userByPhone);
        if (userByPhone!=null){  //查询到的user不为空（证明该手机号已经有人注册了）
            return  null;        //返回null
        }else {  //查询到的结果为空（证明该手机号没被注册）
            insuccess = iNowFilmDao.insertRegisterInfo(user);
            System.out.println(insuccess);
            //没有被注册就允许把信息插入数据库中，返回值为影响的行数
        }
        return insuccess; //返回影响的行数
        //return null;
    }



    //首页点击上映电影，显示所有的上映电影
    public List<NowFilm> selectOnMovies() {
        return iNowFilmDao.selectOnMovies();
    }
    //热映电影点击立即购买，显示当前电影的信息
    public NowFilm selectOneMovies(Integer fnId) {
        return iNowFilmDao.selectOneMovies(fnId);
    }

    //进入购票页，默认查出当天的放映表
    public List<AllMoviesTimes> selectMoviesTimes(Integer ofId, String sDay) throws ParseException {
        List<AllMoviesTimes> MoviesTimes = iNowFilmDao.selectMoviesTimes(ofId, sDay);//查询出的当前电影的场次
        List<AllMoviesTimes> list = new ArrayList<AllMoviesTimes>();
        for (AllMoviesTimes moviesTs: MoviesTimes) { //遍历所有的场次信息
            String date = moviesTs.getsDay();       //获取场次的日期
            String nowTime = moviesTs.getsHour();   //获取场次的时间
            long times = DateSubUtil.subDate(date, nowTime); //将日期和时间传入工具类中
            long now = new Date().getTime();            //现在的毫秒值
            if (times>now){                 //如果电影场次信息的毫秒值大于现在的毫秒值
                list.add(moviesTs);           //放进list集合中
            }
        }

        return list;



    }

    public List<NowFilm> getfilmindex(Integer fnishow) {
        return iNowFilmDao.getfilmindex(fnishow);
    }

    //分页，传入一个用户想看的页面，前端传来的
    public FenYeUtile selectOnePage(Integer currentPage) {
        Integer allCount = iNowFilmDao.selectCount();//查询电影表，返回所有的条数 1
        FenYeUtile fy = new FenYeUtile();
        Integer pages = fy.getPages();  //总页数
        Integer pageSize = fy.getPageSize(); //每页展示的条数，为2,
        pages = allCount/pageSize;   //总条数/每页条数=总页数                  2
        Integer start=(currentPage-1)*pageSize;//算出从几个开始
        if (allCount%pageSize==0){   //如果整除，说明pages就是真实的总页数     3
            pages=pages; //是真实的总页数
        }else{   //不能够整除
            pages++; //就说明还有余数独成一页
        }
        List<NowFilm> nowFilms = iNowFilmDao.selectFYfilm(start, pageSize); //查询出用户想看页的信息
        fy.setAllCount(allCount);
        fy.setCurrentPage(currentPage);
        fy.setOnMovies(nowFilms);
        fy.setPages(pages);
        fy.setPageSize(pageSize);
        return fy;
    }
    //获取首页的热映电影
    public List<NowFilm> selIndexHotMvs(Integer fnIshow) {
        return iNowFilmDao.selIndexHotMvs(fnIshow);
    }





}
